package org.jsola.hr.helper;

import org.jsola.common.ClassKit;
import org.jsola.common.DateKit;
import org.jsola.common.SafeKit;
import org.jsola.hr.dto.MemoInfoAddDTO;
import org.jsola.hr.dto.MemoInfoUpdateDTO;
import org.jsola.hr.entity.MemoInfoDO;
import org.jsola.hr.query.MemoInfoQuery;
import org.jsola.hr.service.IMemoInfoService;
import org.jsola.hr.vo.MemoInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.Date;
import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 备忘录
 *
 * @author zhr
 */
@Component
public class MemoInfoTestHelper extends BaseTestHelper {
    
    @Autowired
    private IMemoInfoService memoInfoService;

    /**
     * 生成add测试数据
     * @return MemoInfoAddDTO
     */
    public MemoInfoAddDTO getMemoInfoAddDTO(){
        MemoInfoAddDTO memoInfoAddDTO = new MemoInfoAddDTO();
        memoInfoAddDTO.setTitle(getRandomValue("varchar",255));
        memoInfoAddDTO.setContent(getRandomValue("varchar",2000));
        memoInfoAddDTO.setRemindDate((Date)ClassKit.getObjectValue(getRandomValue("date",0),"java.util.Date"));
        memoInfoAddDTO.setRemindTime(getRandomValue("time",0));
        memoInfoAddDTO.setRemindNeed(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        memoInfoAddDTO.setRemindBefore(SafeKit.getInteger(getRandomValue("tinyint",4)));
        memoInfoAddDTO.setCompleted(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        memoInfoAddDTO.setCompanyId(getRandomValue("varchar",32));
        memoInfoAddDTO.setRemindType(SafeKit.getInteger(getRandomValue("tinyint",50)));
        memoInfoAddDTO.setRemindTimeByDate(getRandomValue("varchar",50));
        memoInfoAddDTO.setRemindTimeByTime(getRandomValue("time",50));
        memoInfoAddDTO.setConfigId(getRandomValue("varchar",50));
        return memoInfoAddDTO;
    }


    /**
     * 生成update测试数据
     * @return MemoInfoUpdateDTO
     */
    public MemoInfoUpdateDTO getMemoInfoUpdateDTO(MemoInfoVO memoInfoVO){
        return memoInfoService.selectDOById(memoInfoVO.getId(), SITE_ID).to(MemoInfoUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return MemoInfoQuery
     */
    public MemoInfoQuery getMemoInfoQuery() {
        MemoInfoQuery memoInfoQuery = new MemoInfoQuery();
        List<MemoInfoDO> memoInfoDOList = memoInfoService.list(new MemoInfoDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(memoInfoDOList)) {
            MemoInfoDO memoInfoDO = memoInfoDOList.get(0);
            memoInfoQuery = memoInfoDO.to(MemoInfoQuery.class);
            if (memoInfoDO.getRemindDate() != null) {
                memoInfoQuery.setRemindDateStart(DateKit.getBeforeDay(memoInfoDO.getRemindDate(),-1));
                memoInfoQuery.setRemindDateEnd(DateKit.getBeforeDay(memoInfoDO.getRemindDate(),1));
            }
        }
        return memoInfoQuery;
    }

    /**
     * 保存示例
     * @return MemoInfoVO
     */
    public MemoInfoVO saveMemoInfoExample(){
        MemoInfoAddDTO addDTO = this.getMemoInfoAddDTO();
        MemoInfoVO memoInfoVO = memoInfoService.save(addDTO,buildTokenUser());
        return memoInfoVO;
    }


}

